package com.otherTest.java8.osc;

import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import lombok.Data;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import sun.nio.cs.ext.IBM037;
import sun.security.util.KeyUtil;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.chrono.IsoChronology;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static com.otherTest.java8.osc.OscTest.UpdateRouteDispatcherEnum.*;

/**
 * mongoDB
 *
 * @author Conceit
 * 2019/10/17 增加方法
 * @since 1.0.0, 2019/10/17
 */
public class OscTest {

	public static void main(String[] args) {
		List<ObjectOne> objectOneList=new ArrayList<>();
		List<ObjectTwo> objectTwoList=new ArrayList<>();

		ObjectOne objectOne1=new ObjectOne();
		objectOne1.setId("1");
		objectOne1.setFxid("1");
		ObjectOne objectOne2=new ObjectOne();
		objectOne2.setId("2");
		objectOne2.setFxid("2");
		ObjectOne objectOne4=new ObjectOne();
		objectOne4.setId("4");
		objectOne4.setFxid("4");

		objectOneList.add(objectOne1);
		objectOneList.add(objectOne2);
		objectOneList.add(objectOne4);

		ObjectTwo objectTwo1=new ObjectTwo();
		objectTwo1.setFxid("1");
		objectTwo1.setUsername("two1");
		ObjectTwo objectTwo2=new ObjectTwo();
		objectTwo2.setFxid("2");
		objectTwo2.setUsername("two2");
		ObjectTwo objectTwo3=new ObjectTwo();
		objectTwo3.setFxid("3");
		objectTwo3.setUsername("two3");
		objectTwoList.add(objectTwo1);
		objectTwoList.add(objectTwo2);
		objectTwoList.add(objectTwo3);

		List<ObjectOne> fxidList=new ArrayList<>();
		//取出Fxid 一致的数据
		for(ObjectOne objectOne:objectOneList){
			for (ObjectTwo objectTwo:objectTwoList){
				if(objectOne.getFxid().equals(objectTwo.getFxid())){
					fxidList.add(objectOne);
				}
//				if(!objectOne.getFxid().equals(objectTwo.getFxid())){
//					System.out.println(objectOne);
//					System.out.println(objectTwo);
//				}
			}
		}
		fxidList.stream().forEach(System.out::println);

		System.out.println("---交集在上------------oneList新增的在下------");
		//取出fxid 中新增的数据
		List<ObjectOne> objectDiffList=new ArrayList<>();
		objectDiffList=objectOneList.stream().filter(x->!fxidList.contains(x)).collect(Collectors.toList());

		objectDiffList.stream().forEach(System.out::println);

	}

	@Test
	public void test2(){
		String string=new String("赵航123");
		for (char c:string.toCharArray()){
			System.out.println(c);
		}

		Stream.of(string.toCharArray()).forEach(chars -> {
					System.out.println(chars);
				}
				);
		//System.out.println(string.toCharArray().length);


	}

	@Test
	public void test3(){
		System.out.println(100/10);
		System.out.println(104%2);
	}

	@Test
	public void test4(){
		int length=10;
		int index=9;
		//取余操作
		System.out.println((index+1)%length);

		for(int i=1;i<10;i++){
			System.out.println(i%10);
			System.out.println(10%i);
		}
	}

	@Test
	public void test5(){
		class InessTest51{
			List<String> stringList;

			public List<String> getStringList() {
				return stringList;
			}

			public void setStringList(List<String> stringList) {
				this.stringList = stringList;
			}
		}
		class InessTest52{
			List<String> stringList;

			public List<String> getStringList() {
				return stringList;
			}

			public void setStringList(List<String> stringList) {
				this.stringList = stringList;
			}
		}
		InessTest51 inessTest51=new InessTest51();
		inessTest51.setStringList(Arrays.asList("1","2","3"));

		InessTest52 inessTest52=new InessTest52();
		for (String str:inessTest52.getStringList()){
			System.out.println(str);
		}
		BeanUtils.copyProperties(inessTest51,inessTest52);
		for (String str:inessTest52.getStringList()){
			System.out.println(str);
		}

	}

	@Test
	public void test6(){
		String var="20191006-7119-zeus-core-2.0.3.jar";
		String[] vars=var.split("-");
		StringBuffer stringBuffer=new StringBuffer();
		for(int i=2;i<vars.length;i++){
			stringBuffer.append(vars[i]);
		}
		System.out.println(stringBuffer);
	}

	@Test
	public void test7(){

		List<ObjectOne> objectOneList=new ArrayList<>();
		ObjectOne objectOne1=new ObjectOne();
		objectOne1.setId("10");
		objectOne1.setDate(new Date());
		objectOne1.setAmont(new BigDecimal("0.01"));
		objectOne1.setAmontString("0.01%");
		ObjectOne objectOne2=new ObjectOne();
		objectOne2.setId("2");
		objectOne2.setDate(new Date(99999999));
		objectOne2.setAmontString("99%");
		ObjectOne objectOne3=new ObjectOne();
		objectOne3.setId("0");
		objectOne3.setAmontString("88%");
		ObjectOne objectOne4=new ObjectOne();
		objectOne4.setId("-1");
		ObjectOne objectOne5=new ObjectOne();
		objectOne5.setId("11");
		objectOne5.setFxid(null);

		objectOneList.add(objectOne1);
		objectOneList.add(objectOne2);
		objectOneList.add(objectOne3);
		objectOneList.add(objectOne4);
		objectOneList.add(objectOne5);
		objectOneList.stream().forEach(System.out::println);
		System.out.println("----------------开始排序");

		objectOneList=objectOneList.stream()
				.filter(x->Objects.nonNull(x.getAmontString()))
				.sorted( Comparator.comparing(ObjectOne::getAmontString).reversed())
				.collect(Collectors.toList());

//		objectOneList=objectOneList.stream()
//				.filter(x->Objects.nonNull(x.getDate()))
//				.sorted( Comparator.comparing(ObjectOne::getDate).reversed())
//				.collect(Collectors.toList());

//		Comparator<ObjectOne> objectOneComparator = Comparator.comparing(o -> new Integer(o.getId()));
//		objectOneList=objectOneList.stream().sorted(objectOneComparator).collect(Collectors.toList());

		//Collections.sort(objectOneList, Comparator.comparing(ObjectOne::getId).reversed());
		//objectOneList.stream().forEach(System.out::println);
		//return bos.stream().sorted(Comparator.comparing(BuyerOrder::getLimitedPrice).reversed()).limit(5).collect(Collectors.toList());
		//objectOneList=
//				objectOneList.stream()
//				.sorted(Comparator.comparingInt(e -> new Integer(e.getId())));
		//comparingInt 只是个工厂创建comparator， reversed 方法使类型推断出问题
		//lambda表达式仅仅作为第一层比较器comparingInt的参数传进去，它离这个上下文已经很远了
		// 不能感知到集合list里的元素类型是什么！它就只能推断成Object类型
		//https://blog.csdn.net/u013096088/article/details/70156966
		//objectOneList.sort(Comparator.comparingInt((ObjectOne e)-> new Integer(e.getId())).reversed());

		//objectOneList.sort(Comparator.comparingInt((ObjectOne item) -> new Integer(item.getId())).reversed());

				//.collect(Collectors.toList());
		System.out.println("----------------排序结果");
		objectOneList.forEach(System.out::println);
	}

	@Test
	public void test8(){
		int currentDay=1;
		List<String> repeatValues=Arrays.asList("1","2");
		if(repeatValues.contains(currentDay)){
			System.out.println("string contains currentDay");
		}
		if(repeatValues.contains(new String("1"))){
			System.out.println("Integer contains currentDay");
		}

	}

	@Test
	public void test9(){
		int length=4;
		List<Character> characters=
				Arrays.asList('A','B','C','D','E','F','G','H','J','K','L','M',
						'N','P','Q','R','S','T','U','V','W','X','Y','Z',
						'2','3','4','5','6','7','8','9');
		System.out.println(characters.size());
		StringBuilder stringBuilder=new StringBuilder();
		Random random = new Random();
		for (int i = 0; i <length ; i++) {
			System.out.println(i);
			int index=random.nextInt(characters.size());
			stringBuilder.append(characters.get(index));
		}

		System.out.println(stringBuilder);
	}

	@Test
	public void test10(){
		int length=6;
		String str="26892020000001";
		if(Objects.nonNull(str)&&!str.trim().isEmpty()){
			String randomNum=str.substring(str.length()-length);
			String preNum=str.substring(0,str.length()-length);
			BigDecimal bigDecimal=new BigDecimal(randomNum).add(new BigDecimal(1));
			System.out.println(bigDecimal.toPlainString());
			System.out.println(bigDecimal.toPlainString().length());
			//补零
			int diff=length-bigDecimal.toPlainString().length();
			System.out.println(diff);
			StringBuffer stringBuffer=new StringBuffer(preNum);
			for (int i=0;i<diff;i++){
				stringBuffer.append("0");
			}
			stringBuffer.append(bigDecimal.toPlainString());
			System.out.println(stringBuffer.toString());
		}else{
			//新建
			String companyId="2689";
			int currentYear= LocalDate.now().getYear();
			StringBuffer stringBuffer=new StringBuffer(companyId);
			stringBuffer.append(currentYear);
			for(int i=0;i<length;i++){
				stringBuffer.append("0");
			}
			System.out.println(stringBuffer.toString());
		}
	}

	@Test
	public void test11(){
		int index=6-7;
		for (int i=0;i<index;i++){
			System.out.println(i);
		}
	}

	@Test
	public void test12(){
		LocalDateTime currentTime=LocalDateTime.now();
		LocalDateTime startLocalDateTime=currentTime.minusDays(100);

		System.out.println(currentTime);
		System.out.println(startLocalDateTime);

	}

	//要得到的随机数的范围是[2,100]，假设返回的伪随机数的范围是[0,N)，也即[0,N-1];
	// 对得到的这个数模99，于是计算得到的数的范围是[0,98]；
	// 再把结果加2，范围就是[2,100]了。
	@Test
	public void getRandomTimeout(){
		int timeout=180;
		int randomUpLimit=10;
		int randomDownLimit=10;

		randomUpLimit=timeout+randomUpLimit;
		randomDownLimit=timeout-randomDownLimit;

		Random random=new Random();
		int result=random.nextInt(randomUpLimit)%(randomUpLimit-randomDownLimit+1)+randomDownLimit;
		System.out.println(result);
	}

	@Test
	public void get(){
		System.out.println(88%90);
		System.out.println(191%90);
		System.out.println(5%2);
		int i=90;
		int m=0;
		int x=190;
//		System.out.println(m%i);
//		System.out.println(x%i);
		//取模的y%i不超过i
		for(int y=0;y<=x;y++){

				System.out.println((y)+"--"+y%i);

		}
	}

	@Test
	public void getRandomTimeout2(){
		//0-(190-1)
		int up=190;
		Random random=new Random();
		int down=100;

		//取模的数字为up-down+1
		int modulo=190;
		int result=modulo%90;
		System.out.println(result);
		System.out.println(result+down);
	}

	@Test
	public void cleanFile(){
		File cacheDir=new File("D:\\wisdomteam-own-file\\cache");
		LocalDateTime localDateTime=LocalDateTime.now().minusDays(100);
		ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
		System.out.println(zdt);
		long lastTime=zdt.toInstant().toEpochMilli();
		System.out.println(lastTime);

		List<File> dels=new ArrayList<>();
		for(File file:cacheDir.listFiles()){
			//if(lastTime>file.lastModified()){
				System.out.println(file.getName()+"---"+LocalDateTime.ofInstant(Instant.ofEpochMilli(file.lastModified()), ZoneId.systemDefault()));
				dels.add(file);
			//}
		}

//		for(File file:dels){
//			file.delete();
//		}
	}

	@Test
	public  void test13(){
		int year=2021;
		int month=12;
		boolean isLeapYear=IsoChronology.INSTANCE.isLeapYear(year);
		boolean isFebruary=month==2;
		LocalDate localDateYearEnd ;
		if(isLeapYear&&isFebruary){
			localDateYearEnd=LocalDate.of(year, Month.of(month),29);
		}else{
			if(isFebruary){
				localDateYearEnd=LocalDate.of(year, Month.of(month),28);
			}else{
				localDateYearEnd=LocalDate.of(year, Month.of(month),Month.of(month).maxLength());
			}

		}

		//获取指定年的指定月的最后一天的23点59分59秒59毫秒9999纳秒
		LocalTime localTimeYearEnd = LocalTime.MAX;
		LocalDateTime localDateTime=LocalDateTime.of(localDateYearEnd, localTimeYearEnd);

		System.out.println(localDateTime);
	}

	//比较是否在指定的时间段内
	@Test
	public void test14(){
		LocalDateTime in=LocalDateTime.of(2022,1,1,1,1,1,4);
		LocalDateTime start=LocalDateTime.of(2022,1,1,1,1,1,3);
		LocalDateTime end=LocalDateTime.of(2022,1,1,1,1,1,1);

		//如果end 小于start则将两方调换
		if(start.compareTo(end)==1){
			LocalDateTime temp=start;
			start=end;
			end=temp;
		}

		int compare=0;
		if(in.compareTo(start)==-1){
			compare=-1;
			//return;
		}else if(in.compareTo(end)==1){
			compare=1;
			//return;
		}
		System.out.println(compare);
	}

	@Test
	public void test15(){
		Long l1=0L;
		Long l2=1L;
		System.out.println(l1+l2);
	}

	@Test
	public void test16(){
		Date nowDate=new Date();

		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");


//		System.out.println(nowDate);
		java.util.Calendar calstart = java.util.Calendar.getInstance();
		calstart.setTime(nowDate);
		calstart.add(Calendar.DATE,-7);
		Date cleanDate = calstart.getTime();

//		String cleanDateStr=df.format(cleanDate);
//		System.out.println(cleanDateStr);

		File path=new File("C:\\Users\\zhaohang\\Desktop\\temp");
		List<File> delFiles=new ArrayList<>();
		for(File file:path.listFiles()){
			String name=file.getName();

			Date fileDate;
			try{
				String strs=name.substring(0,name.indexOf("."));
				fileDate=df.parse(strs);
			}catch (ArrayIndexOutOfBoundsException e){
				continue;
			}catch (ParseException e){
				continue;
			}
			if(Objects.nonNull(fileDate)){
				if(fileDate.before(cleanDate)){
					delFiles.add(file);
				}
			}
		}
		delFiles.stream().forEach(System.out::println);

	}

	@Test
	public void test17(){
		Class c=this.getClass();
		System.out.println(c.getName());
		test18();
	}

	public void test18(){
		System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
	}




	@Test
	public void test19() throws UnsupportedEncodingException {

		String content = "test中文";
		String secret="0123456789101213";
		AES aes = SecureUtil.aes(secret.getBytes("UTF-8"));
		//String encrypHex = aes.encryptHex(content);

//		byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(),secret.getBytes("UTF-8")).getEncoded();
//
//
//		//构建
//		SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
//
//
//		//加密
//		byte[] encrypt = aes.encrypt(content);
//		//解密
//		byte[] decrypt = aes.decrypt(encrypt);

		//加密为16进制表示
		String encryptHex = aes.encryptHex(content);
		System.out.println(encryptHex);

		//解密为字符串
		String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
		System.out.println(decryptStr);
	}

	@Test
	public void blowfish() throws UnsupportedEncodingException {
		String content = "test中文";
		String secret="123";
		SymmetricCrypto blowfish=new SymmetricCrypto(SymmetricAlgorithm.Blowfish.getValue(),secret.getBytes("UTF-8"));


		String encryptHex = blowfish.encryptHex(content);
		System.out.println(encryptHex);

		//解密为字符串
		String decryptStr = blowfish.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
		System.out.println(decryptStr);

	}

	@Test
	public void test20()  {
		int [] ints=new int[]{0,1,2,3,4,5,6,7,8,9,10};
		System.out.println(ints.length);
//		for (int i = 0; i <ints.length ; i++) {
////			System.out.println(i);
////			System.out.println(ints[i]);
////			System.out.println("--");
////		}
		int i=0;
		while(i<ints.length){
			System.out.println(ints[i]);
			i++;
		}
	}
	@Test
	public void test21()  {
		List<Integer>  ints=Arrays.asList(0,1,2,3,4,5,6,7,8,9,10);
		System.out.println(ints.size());
		int i=0;
		while(i<ints.size()){
			System.out.println(ints.get(i));
			++i;
		}
	}
	@Test
	public void test22()  {
		List<Integer>  ints=Arrays.asList(0,1,2,3,4,5,6,7,8,9,10);
		System.out.println(ints.size());
		for (int i = 0; i <ints.size() ; i++) {
//			System.out.println(ints.get(i));
		}
		System.out.println(ints.get(0));
		System.out.println(ints.get(10));
		System.out.println(ints.get(ints.size()));
	}

	@Test
	public void test23()  {
		List<Integer>  ints=Arrays.asList(0,1,2,3,4,5,6,7,8,9,10);

		for (int i = ints.size()-1; i >=0 ; i--) {
			if(i==0){
				System.out.println("我是end:"+ints.get(i));
			}
			if(i==ints.size()-1){
				System.out.println("我是start:"+ints.get(i));
			}
		}

	}

	@Test
	public void test24()  {
		int i=0;
		int a=i++;
		System.out.println(i);
		System.out.println(a);
	}

	@Test
	public void test25()  {
		int i=0;
		int a=++i;
		System.out.println(i);
		System.out.println(a);
	}

	@Test
	public void test26()  {
		Boolean flag=null;
		System.out.println(flag==true);
	}

	@Test
	public void test27()  {
		List<Integer>  ints=Arrays.asList(0,1,2,3,4,5,6,7,8,9,10);
		Integer next=null;
		for (int i = ints.size()-1; i >=0 ; i--) {
//			if(i==0){
//				System.out.println("我是end:"+ints.get(i));
//			}
//			if(i==ints.size()-1){
//				System.out.println("我是start:"+ints.get(i));
//			}
			if(i==0){
				System.out.println("head");
				System.out.println(ints.get(i));
			}
//			next=ints.get(i);
//			System.out.println(next);
		}

	}

	@Test
	public void test28()  {
		Long num=10L;
		Long size=10L;
		Long count=100L;


	}

	@Test
	public void test29(){
		String test="1";
		String[] strs=test.split(",");
		Stream.of(strs).forEach(System.out::println);

	}

	@Test
	public void test30(){
		String test="12345.";
		System.out.println(test.concat("1"));
		System.out.println(test.contains("1"));
		System.out.println(test.matches("1"));

	}

	@Test
	public void test31(){
		String code="sgcbs:admin:user";
		String pCode="sgcbs:admin";
		System.out.println(code.substring(pCode.length()+1));
	}

	@Test
	public void test32(){
		String raw="12345:67:89:0";
		String parent="12345:67:89";
		String oldParent="12345:67";
		String newParent="12345:68";
		//System.out.println(raw.replace(oldParent,newParent));
		//System.out.println(parent.replace(oldParent,newParent));
		System.out.println(newParent.replace(oldParent,newParent));
	}

	@Test
	public void test33(){
		Integer i=0;
		i++;
		System.out.println(i);
	}

	@Test
	public void test34(){
		int i=0;
		i++;
		System.out.println(i);
	}

	@Test
	public void test35(){
		int i=3;
		for (int j = 1; j <i; j++) {
			System.out.println(j);
		}
	}

	@Test
	public void test36(){
		List<LocalDateTime> localDateTimes=new ArrayList<>();

		localDateTimes.add(LocalDateTime.now());
		localDateTimes.add(LocalDateTime.now().minusDays(1));
		localDateTimes.add(LocalDateTime.now().minusDays(7));
		localDateTimes.add(LocalDateTime.now().plusDays(1));
		localDateTimes.add(LocalDateTime.now().plusDays(7));

		localDateTimes=localDateTimes.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
		localDateTimes.stream().forEach(System.out::println);
	}

	@Test
	public void test37(){
		String str1="123456";
		System.out.println(str1.endsWith("45"));
	}


	public void test38(){
		int start=0;
		int end=10;

		int flag=start;

		while (end-flag!=-1){
			System.out.println(flag);
			flag++;
		}


	}

	@Test
	public void test39(){
		int[] arr=new int[]{4,6,9};
		int target=2;
		if(target==0){
			System.out.println(0);
			return;
		}
		if(target>=12){
			System.out.println(12);
			return;
		}
		for(int i=1;i<arr.length-1;i++){

			if(target>=arr[i]&&target<=arr[i+1]){
				System.out.println(arr[i]);
				return;
			}
		}

	}

	@Test
	public void test40(){
		BigDecimal z10=new BigDecimal(10);
		BigDecimal f5=new BigDecimal(-5);
		BigDecimal f10=new BigDecimal(-10);

		System.out.println(new BigDecimal(6).compareTo(new BigDecimal(6))==-1);
	}

	@Test
	public void test41(){
		BigDecimal z10=new BigDecimal(10);
		BigDecimal f12=new BigDecimal(-12);
		BigDecimal f10=new BigDecimal(-10);

		System.out.println(f12.add(z10));
	}

	@Test
	public void test42(){
		String str1="test";
		String str2=new String("test");
		String str3=str1+4;

		System.out.println(str1==str2);
		System.out.println(str1.equals(str2));
		System.out.println("test4"==str3);
	}

	/**
	 * 10万个key,50个value
	 * 统计每个value的个数
	 */
	@Test
	public void test43(){
		Long start=System.currentTimeMillis();
		HashMap<Integer,Integer> hashMap=new HashMap();
		HashMap<Integer,Integer> result=new HashMap();
		Random random = new Random();
		for(int i=0;i<100000;i++){
			int value=random.nextInt(30);
			hashMap.put(i,value);
		}
		//遍历entrySet
		for(Map.Entry<Integer,Integer> entry:hashMap.entrySet()){
			Integer hash=result.getOrDefault(entry.getValue(),0);
			if(hash==0){
				result.put(entry.getValue(),1);
			}else{
				result.replace(entry.getValue(),++hash);
			}
//			Integer hash=result.get(entry.getValue());
//			if(Objects.isNull(hash)){
//				result.put(entry.getValue(),1);
//			}else{
//				result.replace(entry.getValue(),++hash);
//			}
		}
		//最终结果
		//result.forEach((k,v)->System.out.println(v));
		Long end=System.currentTimeMillis();
//		System.out.println(start);
//		System.out.println(end);
		System.out.println(end-start);
	}

	@Test
	public void test44(){
		new Boolean(true);

		System.out.println();
	}

	@Test
	public void test45(){
		String code="sgcbs:admin:user";
		String pCode="sgcbs:admin";
		System.out.println(code.substring(0,code.indexOf(":")));
	}
	@Test
	public void test46(){
		String code="sgcbs:admin:user";
		String pCode="sgcbs:admin";
		String ecode="org";
		System.out.println(code.substring(code.lastIndexOf(":")+1));
		System.out.println(code.replace(code.substring(code.lastIndexOf(":")+1),ecode));
	}


	@Test
	public void test47(){
		String p="web:org";
		String t="web:org:info";


		String n="web:admin";
		String o="web:org";
		System.out.println(p.replace(o,n));
		System.out.println(t.replace(o,n));
	}

	@Test
	public void test48(){

		UpdateRouteDispatcherEnum dispatcherEnum= CHILD;
		switch (dispatcherEnum){
			case NOT:
				System.out.println(NOT);
				break;
			case PARENT:
				System.out.println(PARENT);
				break;
			case CHILD:
				System.out.println(CHILD);
				break;
			case ALL:
				System.out.println(ALL);
				break;
			default:
				System.out.println("扑街仔");

		}
	}

	enum UpdateRouteDispatcherEnum {
		/**
		 * 父子均未变更
		 */
		NOT,
		/**
		 * 父code变更 子未变更
		 */
		PARENT,
		/**
		 * 子code变更
		 */
		CHILD,
		/**
		 * 均变更
		 */
		ALL;
	}
}